package cn.lg.soar.common.model;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 数据库 SUM 查询的结果类
 * @author luguoxiang 469599794@qq.com
 * @Date: 2024/1/22 10:55
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
@Data
public class SumDTO<K extends Serializable> implements Serializable {

    /**
     * 统计维度key（label 和 key 使用一个即可，也可以都赋值）
     */
    private K key;

    /**
     * 统计维度名称（label 和 key 使用一个即可，也可以都赋值）
     */
    private String label;

    /**
     * 统计值（SUM(xxx) 值）
     */
    private BigDecimal value;

    /**
     * 转map
     * @param list
     * @return
     * @param <K>
     */
    public static <K extends Serializable> Map<K, BigDecimal> toMap(Collection<SumDTO<K>> list) {
        return list.stream()
                .collect(Collectors.toMap(SumDTO::getKey, SumDTO::getValue));
    }
}
